|
|
|
Lab 4 -
Synthesis -- Part 2
Sequential circuits
Цел
|
Придобиване на практически опит за работа с
програма за логически синтез.
|
Задание |
Да се извърши логически синтез на последователни
и синхронни схеми. Да се анализират резултатите от синтеза --
схеми, бързодействие, използвани ресурси.
|
|
Указания

|
При синтеза да се използват FPGA
интегрални схеми от фамилията Virtex на фирмата
Xilinx.
За анализ на схемите използвайте
резултатите преди архитектурната оптимизация.
За анализ на бързодействието и
необходимите ресурси използвайте оптимизираните
резултати. |
Задача 4 --
Синтез на тригери управлявани по
фронт
На фигури 4.1 и 4.2 са показани алтернативни
описания на тригер управляван по фронт с логическо ИЛИ на входа за
данни (файловете са dff_ors_sens.vhd
и dff_ors_wait.vhd).
Синтезирайте тези модели и сравнете получените схемни реализации.
Има ли разлики между тях?
|
Фигура 4.1 --
Модел на тригер -- списък на чувствителност |
library ieee;
use ieee.std_logic_1164.all;
entity dff_or is
port (a, b, clk: in std_logic;
q: out std_logic);
end dff_or;
architecture sensitivity_list of dff_or is
begin
process (clk) -- clock name is in sensitivity list
begin
if rising_edge(clk) then
q <= a or b;
end if;
end process;
end sensitivity_list ;
|
|
Фигура 4.2 --
Модел на тригер -- оператор wait
|
library ieee;
use ieee.std_logic_1164.all;
entity dff_or1 is
port (a, b, clk: in std_logic;
q: out std_logic);
end dff_or1;
architecture wait_statement of dff_or1 is
begin
process -- note the absence of a sensitivity list.
begin
-- the process waits here until the condition becomes true
wait until rising_edge(clk);
q <= a or b;
end process;
end wait_statement ;
|
Задача 5 --
Синтез на тригери с асинхронни и синхронни SET/RESET входове
На фигури 5.1 и 5.2 са показани модели на
тригери управлявани по фронт със синхронни и асинхронни входове за
установяване в "0" и "1" (файловете са dff1.vhd
и dff2.vhd).
Синтезирайте тези модели и сравнете получените схемни
реализации.
|
Фигура 5.1 --
Модел на тригер -- асинхронен set/reset |
library ieee;
use ieee.std_logic_1164.all;
entity dff1 is
port (data, clk, reset, set : in std_logic;
qrs: out std_logic);
end dff1;
architecture async_set_reset of dff1 is
begin
setreset: process (clk, reset, set)
begin
if reset = '1' then
qrs <= '0';
elsif set = '1' then
qrs <= '1';
elsif rising_edge(clk) then
qrs <= data;
end if;
end process setreset;
end async_set_reset;
|
|
Фигура 5.2 --
Модел на тригер -- синхронен set/reset |
library ieee;
use ieee.std_logic_1164.all;
entity dff2 is
port (data, clk, reset, set : in std_logic;
qrs: out std_logic);
end dff2;
architecture sync_set_reset of dff2 is
begin
setreset: process (clk)
begin
if rising_edge(clk) then
if reset = '1' then
qrs <= '0';
elsif set = '1' then
qrs <= '1';
else
qrs <= data;
end if;
end if;
end process setreset;
end sync_set_reset;
|
Задача 6 --
Синтез на тригери управлявани по
ниво
На фигури 6.1 и 6.2 са показани модели на тригер
управляван по ниво и на логическа функция с разрешаване на изхода
(файловете са or_latch.vhd
и or_gated.vhd).
Синтезирайте тези модели и обяснете разликите между получените
схемни реализации.
|
Фигура 6.1 --
Модел на тригер управляван по ниво
|
library ieee;
use ieee.std_logic_1164.all;
entity or_latch is
port (a, b, ena : in std_logic ;
q: out std_logic );
end or_latch;
architecture behave of or_latch is
begin
process (ena, a, b)
begin
if ena = '1' then
q <= a or b;
end if;
end process ;
end behave;
|
|
Фигура 6.2 --
Модел на логическа функция с разрешаване на изхода |
library ieee;
use ieee.std_logic_1164.all;
entity or_gated is
port (a, b, ena : in std_logic ;
q: out std_logic );
end or_gated;
architecture behave of or_gated is
begin
process (ena, a, b)
begin
if ena = '1' then
q <= a or b;
else
q <= '0';
end if;
end process ;
end behave;
|
Задача 7 --
Синтез на крайни автомати
Като използвате крайния автомат на управляващата
логика на хронометър разработен в упражнение 3-3, синтезирайте две
схемни реализации - с двоично кодиране и кодиране с "гореща
единица". Сравнете ресурсите необходими за двете
реализации.
|
Указание

|
Избора на кодирането на състоянията на
крайния автомат се задава от менюто:
Synthesis -> Options -> Project:
One hot или Binary
|
| |